// SimpleExpression.cpp: implementation of the SimpleExpression class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "SimpleExpression.h"
#include "AccidenceAnalyzer.h"
#include "SyntaxAnalyzer.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

namespace PropertySystem
{
	SimpleExpression::SimpleExpression(const CString& strExpression, PropertyStack* pStack)
	{
		ASSERT(!strExpression.IsEmpty());
		m_strExpression = strExpression;
		m_pStack = pStack;
	}
	
	SimpleExpression::~SimpleExpression()
	{
		
	}

	Variable SimpleExpression::Caculate()
	{
		SyntaxAnalyzer SAnalyzer(m_strExpression, m_pStack);
		if(!SAnalyzer.Interpret())
		{
			SAnalyzer.ReportError();
			return Variable();
		}

		return SAnalyzer.Execute();
	}
};